package com.itm.excel.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class UtilsExcel {

	private final static Logger logger = Logger.getLogger(UtilsExcel.class);
	
	public static HSSFWorkbook getFicheroExcel(String nombreFichero) {
		try{
			FileInputStream fExcel = new FileInputStream(nombreFichero);
			return new HSSFWorkbook(fExcel);
		}catch (Exception e){
			throw new RuntimeException("Problemas al abrir el fichero Excel: " + e.getMessage());
		}
	}
	
	public static void guardarEnExcel(HSSFWorkbook libroExcel, String rutaAbsolutaExcel) {
		try {
			existeCarpeta(rutaAbsolutaExcel);
			
			FileOutputStream streamSalida = new FileOutputStream(rutaAbsolutaExcel);
			libroExcel.write(streamSalida);
			streamSalida.close();
		} catch (IOException e) {
			System.out.println("Error en la lectura del fichero excel: " + e.getMessage());
		}
	}
	
	public static ArrayList<String> getCeldasCabecera(HSSFRow filaCabecera) {
		ArrayList<String> celdasCabecera = new ArrayList<String>(); 
		int ultimaColumna = filaCabecera.getLastCellNum();
		if (ultimaColumna!=-1) {
			for (int i=0;i<ultimaColumna;i++){
				celdasCabecera.add(filaCabecera.getCell(i).getStringCellValue());
			}
		}
		return celdasCabecera;
	}
	
	private static void existeCarpeta(String ruta) {
		File fileExcel = new File(ruta);
		File dir = new File(fileExcel.getParent());

		if( !dir.exists()){
			dir.mkdirs();
		}
	}
	
	public static String getRutaAbsoluta(String rutaExcel) {
		String rutaAbsolutaExcel = "";
		try {
			rutaAbsolutaExcel = new java.io.File(".").getCanonicalPath()+"/"+rutaExcel;
		} catch (IOException e) {
			logger.error("No se puede obtener la ruta absoluta:" + e.getMessage());
		}
		return rutaAbsolutaExcel;
	}
}
